composite design pattern c